
#include "udp_def_auto.h"
#include "udf_cfg.h"
#include "udp_def.h"
#include "udf.h"
#include "udf_def_auto.h"
#include "udt_def_auto.h"

typedef struct
{
	uint8_t sNum;
	uint8_t sNumBu;
	uint16_t crc;
	uint32_t startAddr;
	uint32_t len;
	uint32_t endAddr;
	uint32_t dstAddr;
	uint32_t itvFlag;
	uint32_t enable; // new add
} PARAM_PATCH_T;

#if UDT_MAX_NUM < (UDF_MAX_NUM+1)
#error UDT may lost UDF_infomation
#endif

#ifdef UDT_SUB_PROJECT
// UDT子工程 暂用UDT_1k 指定存储区
const PARAM_PATCH_T UDT_ParamStr[UDF_MAX_NUM + 1] __attribute__((section(".ARM.__at_0x0000C000"))) = {
#else
const PARAM_PATCH_T UDT_ParamStr[UDF_MAX_NUM + 1] = {
#endif
	[0] = {
		.sNum = 0+1,
		.sNumBu = 0xff - (0+1),
		.crc = UDP_CRC,
		.startAddr = UDP_START_ADDR,
		.len = UDP_SIZE,
		.endAddr = UDP_START_ADDR + UDP_SIZE,
		.dstAddr = UDP_ADDR,
		.itvFlag = 0,
		.enable = 1,
	},
	[1] = {
		.sNum = 1+1,
		.sNumBu = 0xff - (1+1),
		.crc = UDF01_CRC,
		.startAddr = UDF01_SRC_ADDR + UDF_OFFSET,
		.len = UDF01_LEN,
		.endAddr = UDF01_SRC_ADDR + UDF_OFFSET + UDF01_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_01,
	},
	[2] = {
		.sNum = 2+1,
		.sNumBu = 0xff - (2+1),
		.crc = UDF02_CRC,
		.startAddr = UDF02_SRC_ADDR + UDF_OFFSET,
		.len = UDF02_LEN,
		.endAddr = UDF02_SRC_ADDR + UDF_OFFSET + UDF02_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_02,
	},
	[3] = {
		.sNum = 3+1,
		.sNumBu = 0xff - (3+1),
		.crc = UDF03_CRC,
		.startAddr = UDF03_SRC_ADDR + UDF_OFFSET,
		.len = UDF03_LEN,
		.endAddr = UDF03_SRC_ADDR + UDF_OFFSET + UDF03_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_03,
	},
	[4] = {
		.sNum = 4+1,
		.sNumBu = 0xff - (4+1),
		.crc = UDF04_CRC,
		.startAddr = UDF04_SRC_ADDR + UDF_OFFSET,
		.len = UDF04_LEN,
		.endAddr = UDF04_SRC_ADDR + UDF_OFFSET + UDF04_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_04,
	},
	[5] = {
		.sNum = 5+1,
		.sNumBu = 0xff - (5+1),
		.crc = UDF05_CRC,
		.startAddr = UDF05_SRC_ADDR + UDF_OFFSET,
		.len = UDF05_LEN,
		.endAddr = UDF05_SRC_ADDR + UDF_OFFSET + UDF05_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_05,
	},
	[6] = {
		.sNum = 6+1,
		.sNumBu = 0xff - (6+1),
		.crc = UDF06_CRC,
		.startAddr = UDF06_SRC_ADDR + UDF_OFFSET,
		.len = UDF06_LEN,
		.endAddr = UDF06_SRC_ADDR + UDF_OFFSET + UDF06_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_06,
	},
	[7] = {
		.sNum = 7+1,
		.sNumBu = 0xff - (7+1),
		.crc = UDF07_CRC,
		.startAddr = UDF07_SRC_ADDR + UDF_OFFSET,
		.len = UDF07_LEN,
		.endAddr = UDF07_SRC_ADDR + UDF_OFFSET + UDF07_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_07,
	},
	[8] = {
		.sNum = 8+1,
		.sNumBu = 0xff - (8+1),
		.crc = UDF08_CRC,
		.startAddr = UDF08_SRC_ADDR + UDF_OFFSET,
		.len = UDF08_LEN,
		.endAddr = UDF08_SRC_ADDR + UDF_OFFSET + UDF08_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_08,
	},
	[9] = {
		.sNum = 9+1,
		.sNumBu = 0xff - (9+1),
		.crc = UDF09_CRC,
		.startAddr = UDF09_SRC_ADDR + UDF_OFFSET,
		.len = UDF09_LEN,
		.endAddr = UDF09_SRC_ADDR + UDF_OFFSET + UDF09_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_09,
	},
	[10] = {
		.sNum = 10+1,
		.sNumBu = 0xff - (10+1),
		.crc = UDF10_CRC,
		.startAddr = UDF10_SRC_ADDR + UDF_OFFSET,
		.len = UDF10_LEN,
		.endAddr = UDF10_SRC_ADDR + UDF_OFFSET + UDF10_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_10,
	},
	[11] = {
		.sNum = 11+1,
		.sNumBu = 0xff - (11+1),
		.crc = UDF11_CRC,
		.startAddr = UDF11_SRC_ADDR + UDF_OFFSET,
		.len = UDF11_LEN,
		.endAddr = UDF11_SRC_ADDR + UDF_OFFSET + UDF11_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_11,
	},
	[12] = {
		.sNum = 12+1,
		.sNumBu = 0xff - (12+1),
		.crc = UDF12_CRC,
		.startAddr = UDF12_SRC_ADDR + UDF_OFFSET,
		.len = UDF12_LEN,
		.endAddr = UDF12_SRC_ADDR + UDF_OFFSET + UDF12_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_12,
	},
	[13] = {
		.sNum = 13+1,
		.sNumBu = 0xff - (13+1),
		.crc = UDF13_CRC,
		.startAddr = UDF13_SRC_ADDR + UDF_OFFSET,
		.len = UDF13_LEN,
		.endAddr = UDF13_SRC_ADDR + UDF_OFFSET + UDF13_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_13,
	},
	[14] = {
		.sNum = 14+1,
		.sNumBu = 0xff - (14+1),
		.crc = UDF14_CRC,
		.startAddr = UDF14_SRC_ADDR + UDF_OFFSET,
		.len = UDF14_LEN,
		.endAddr = UDF14_SRC_ADDR + UDF_OFFSET + UDF14_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_14,
	},
	[15] = {
		.sNum = 15+1,
		.sNumBu = 0xff - (15+1),
		.crc = UDF15_CRC,
		.startAddr = UDF15_SRC_ADDR + UDF_OFFSET,
		.len = UDF15_LEN,
		.endAddr = UDF15_SRC_ADDR + UDF_OFFSET + UDF15_LEN,
		.dstAddr = UDF_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_15,
	},
	[16] = {
		.sNum = 16+1,
		.sNumBu = 0xff - (16+1),
		.crc = UDF16_CRC,
		.startAddr = UDF16_SRC_ADDR + UDF_OFFSET,
		.len = UDF16_LEN,
		.endAddr = UDF16_SRC_ADDR + UDF_OFFSET + UDF16_LEN,
		.dstAddr = UDF16_DST_ADDR + UDF_OFFSET,
		.itvFlag = 0,
		.enable = UDF_EN_16,
	}};

#if defined(UDF_PRJ)
const uint8_t UDT_1k_Const[1024] __attribute__((section(".ARM.__at_0x0000C800"))) = UDT_TABLE;
#else
const uint8_t UDT_1k_Const[1024] = UDT_TABLE;
#endif
